home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / R-Shows / (c)sdg.d64 / graphic tut-3.64 (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  18KB  |  470 lines

  1. 0 REM" P.J.PONZO*83*WATERLOO/ONTARIO
  2. 1 [143]"
  3. 1000 GOSUB60000:PRINTCHR$(142):PRINT"[147]               GRAPHICS-3"
  4. 1001 PRINT"[176][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][174]"
  5. 1002 PRINT"[221]          MORE C64 GRAPHICS         [146] [221]":MS$="PONZOTUTOR"
  6. 1003 PRINT"[173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][189][144]":GOSUB63100:MS$=" WELCOME!"
  7. 1004 GOSUB63100:GOSUB63000:PRINT"[147][144]";
  8. 1010 GOSUB7001
  9. 1020 GOSUB7600
  10. 1030 PRINTDN$"LET'S REVIEW..":GOSUB63000
  11. 1040 PRINTDN$"LET'S CALL BMM[146]=B[146]IT M[146]AP M[146]ODE BIT"
  12. 1050 A$=BM$:B$="[214]":GOSUB7100:GOSUB63000
  13. 1060 PRINTDN$"& MCM[146]=M[146]ULTI C[146]OLOUR M[146]ODE BIT"
  14. 1070 A$=MC$:B$="[214]":GOSUB7100:GOSUB63000
  15. 1080 PRINTDN$"SMB[146]=S[146]CREEN M[146]EMORY B[146]ASE"
  16. 1090 A$=SM$:B$="[214][214][214][214]":GOSUB7100:GOSUB63000
  17. 1100 PRINTDN$"CMB[146]=C[146]HARACTER M[146]EMORY B[146]ASE"
  18. 1110 A$=CM$:B$="[214][214][214][146]1":GOSUB7100:GOSUB63000
  19. 1120 PRINTDN$"ASSUME BMM[146]=0:MCM[146]=0 "
  20. 1130 A$=BMM$:B$="0":GOSUB7100
  21. 1140 A$=MCM$:B$="0":GOSUB7100:GOSUB63000:GOSUB7603
  22. 1145 PRINTDN$"..AND SCREEN MEMORY[146] STARTS AT 1024"
  23. 1150 A$=SMB$:B$="0001":GOSUB7100:GOSUB63000
  24. 1155 PRINTDN$"..AND CHARACTER[160]MEMORY[146] AT 53248"
  25. 1160 A$=CMB$:B$="010":GOSUB7100:GOSUB63000
  26. 1165 PRINTDN$"(PEEK(V+24)=21...NORMALLY)":GOSUB63000
  27. 1170 PRINTDN$"NOW POKE1025,2[146]":GOSUB63000
  28. 1180 PRINTDN$"SCREEN MEMORY LOC'N 1025 HAS '2'"
  29. 1190 A$=SC$:B$="00000010":GOSUB7100:GOSUB63000
  30. 1200 PRINTDN$"WHAT'S ON THE SCREEN AT LOC'N 1025?":GOSUB63000
  31. 1210 PRINTDN$"1[146] EXTRACT THE CONTENTS OF LOC'N 1025":GOSUB63000
  32. 1220 PRINTDN$"...THE NUMBER '2'.":GOSUB63000
  33. 1230 PRINTDN$"2[146] GET 'PIXEL PATTERN' #2 FROM CH'R MEM'Y[146]":GOSUB63000
  34. 1240 PRINTDN$"'PATTERNS' COME IN GROUPS OF 8 BYTES.":GOSUB63000
  35. 1250 PRINTDN$"PATTERN #2 COMES FROM 'GROUP #2'.":GOSUB63000
  36. 1260 PRINTDN$"'GROUP #0' IS FROM BASE[146] TO BASE[146]+7":GOSUB63000
  37. 1270 PRINTDN$"'GROUP #1' IS FROM BASE[146]+8 TO BASE[146]+15":GOSUB63000
  38. 1280 PRINTDN$"'GROUP #2' IS FROM BASE[146]+16 TO BASE[146]+23":GOSUB63000
  39. 1290 A$=CH$:B$="BASE[146]+16":GOSUB7100
  40. 1300 A$=CH$+"[145][145][145]":B$="BASE[146]+17":GOSUB7100
  41. 1310 A$=CH$+"[145][145][145][145][145][145]":B$="BASE[146]+18":GOSUB7100
  42. 1320 A$=CH$+"[145][145][145][145][145][145][145][145][145]":B$="BASE[146]+23":GOSUB7100
  43. 1330 PRINTDN$"THESE 8[146] BYTES DETERMINE 64[146] PIXELS.":GOSUB63000
  44. 1340 PRINTDN$"FOR 'NORMAL' CHARACTER MEMORY..":GOSUB63000
  45. 1350 PRINTDN$"'GROUP #2' GIVES THE LETTER 'B'.":GOSUB63000
  46. 1360 PRINTDN$"..AND A COLOURED 'B' APPEARS ON SCREEN!":GOSUB63000
  47. 1370 PRINTDN$"WHAT COLOURS??":GOSUB63000
  48. 1380 PRINTDN$"3[146] GO TO COLOUR MEMORY[146](55296)"
  49. 1390 PRINTCH$"[157][157]   COLOUR MEMORY^    "
  50. 1395 B$="[157]        [221] [221][145][157][157][157][157][157][157][157][157][157][157][157]        [157][157][157][157][157][157][157][157]        "
  51. 1400 A$=CH$:PRINTA$B$
  52. 1410 A$=CH$+"[145][145][145]":PRINTA$B$
  53. 1420 A$=CH$+"[145][145][145][145][145][145]":PRINTA$B$
  54. 1430 A$=CH$+"[145][145][145][145][145][145][145][145][145]":PRINTA$"          ":GOSUB63000
  55. 1435 PRINTDN$"JUST NYBBLES..REMEMBER?":GOSUB63000
  56. 1440 PRINTDN$"THE SCREEN MEMORY[146] LOC'N IS 1024+1[146]"
  57. 1445 A$=SC$:B$="00000010":GOSUB7100:GOSUB63000
  58. 1450 PRINTDN$"SO GO TO COLOUR MEMORY[146] LOC'N 55296+1[146]":GOSUB63000
  59. 1460 A$=CH$+"[145][145][145][157][157][157][192][192][192][192][192][192][192][192][192]>":B$="1101":GOSUB7100:GOSUB63000
  60. 1470 PRINTDN$"THIS MAY HAVE '13'=LIGHT GREEN.":GOSUB63000
  61. 1480 PRINTDN$"SO ON[146] PIXELS ARE 'LIGHT GREEN'":GOSUB63000
  62. 1490 PRINTDN$"AND OFF[146] PIXELS ARE ????":GOSUB63000
  63. 1500 PRINTDN$"BACKGROUND COLOUR[146]!":GOSUB63000
  64. 1510 PRINT"[147]";:GOSUB7001:PRINTDN$"SUPPOSE BMM[146]=1:MCM[146]=0"
  65. 1520 A$=BMM$:B$="1":GOSUB7100
  66. 1530 A$=MCM$:B$="0":PRINTA$B$
  67. 1535 GOSUB63000:PRINTDN$"WE'RE IN NORMAL B[146]IT M[146]AP M[146]ODE"
  68. 1540 GOSUB63000:GOSUB7606:PRINTDN$"..AND THE SCREEN GOES BANANAS!":GOSUB63000
  69. 1550 V=53248:POKEV+17,PEEK(V+17)OR32:FORT=1TO1000:NEXT:POKEV+17,27
  70. 1560 PRINTDN$"SEE?":GOSUB63000
  71. 1570 PRINTDN$"THE SCREEN WAS FILLED WITH ???":GOSUB63000
  72. 1580 PRINTDN$"CHARACTER MEMORY[146]!":GOSUB63000
  73. 1590 PRINTDN$"8K BYTES STARTING AT CH'R MEM'Y BASE[146]":GOSUB63000
  74. 1600 PRINTDN$"WERE USED TO TURN PIXELS ON[146]/OFF[146]!":GOSUB63000
  75. 1610 PRINTDN$"WANT TO SEE THE 'CHARACTERS'?":GOSUB63000
  76. 1620 PRINTDN$"I'LL CLEAR THE SCREEN..AND SET BMM[146]=1":GOSUB63000
  77. 1630 PRINTDN$"HIT A KEY TO GO TO 'NORMAL'..":GOSUB63000
  78. 1640 PRINT"[147]":GOSUB7200
  79. 1650 MS$="BANANAS!!!":GOSUB63100
  80. 1660 PRINT"[147]THE 'COLOURS' OF THE PIXELS WERE"
  81. 1670 PRINT"FROM THE 1000 BYTES OF SCREEN MEMORY[146]."
  82. 1680 PRINT"A 'CLEAR' SCREEN MEANS SCREEN MEMORY[146]"
  83. 1690 PRINT"CONTAINS '32' EVERYWHERE (32=SPACE)."
  84. 1700 PRINT"AND, IN BINARY, 32=0010[146] 0000[146]"
  85. 1705 PRINT"(ON[146] PIXEL COLOUR-OFF[146] PIXEL COLOUR)"
  86. 1710 PRINT"SO THE ON[146] PIXELS WERE COLOUR #2"
  87. 1720 PRINT"(0010='2') AND THE OFF[146][146] PIXELS WERE"
  88. 1730 PRINT"COLOUR #0 (0000='0')."
  89. 1740 PRINT"THAT GIVES 'RED CHARACTERS' AND"
  90. 1750 PRINT"'BLACK BACKGROUND'!":GOSUB63000
  91. 1760 PRINT"[147]IF WE WANTED BLUE BACKGROUND AND"
  92. 1770 PRINT"WHITE PIXELS, WE'D FILL SCREEN MEMORY"
  93. 1780 PRINT"WITH 0001 0110='WHITE' & 'BLUE'='22'"
  94. 1785 PRINT"V=53248:POKEV+17,PEEK(V+17)OR32"
  95. 1790 PRINT"FORI=0TO999:POKE1024+I,22:NEXT "
  96. 1800 PRINT"LET'S TRY IT!":GOSUB63000
  97. 1810 V=53248:POKEV+17,PEEK(V+17)OR32
  98. 1820 FORI=0TO999:POKE1024+I,22:NEXT:POKEV+17,27:PRINT"[147]"
  99. 1830 MS$="GORGEOUS!":GOSUB63100
  100. 1840 PRINT"[147]YOU DID[146] SEE SOME OF THE 'CHARACTERS'"
  101. 1850 PRINT"IN CHARACTER MEMORY[146], RIGHT?"
  102. 1860 PRINT"LET'S LOOK AT ANOTHER PART OF MEMORY."
  103. 1870 PRINT"WE'LL CHANGE CHARACTER MEMORY[146] BASE"
  104. 1880 PRINT"TO SOMEPLACE OTHER THAN 55296[146] WITH"
  105. 1890 PRINT"POKEV+24,(PEEK(V+24)AND240) OR X"
  106. 1900 PRINT"WHERE X[146] IS 3,5,7,9,11,13 OR 15":GOSUB63000
  107. 1910 PRINT"[147]WHEN WE RETURN FROM THIS ABNORMAL"
  108. 1911 PRINT"SCREEN DISPLAY WE'LL HAVE A"
  109. 1912 PRINT"WIERD 'CHARACTER SET'!!"
  110. 1913 PRINT"I'LL PRINT THE ALPHABET SO YOU"
  111. 1914 PRINT"CAN SEE JUST HOW WEIRD!"
  112. 1915 MS$="  READY[146]?":GOSUB63100:GOSUB63000:PRINT"[147]":X=9:NN=1
  113. 1920 V=53248:POKEV+17,PEEK(V+17)OR32
  114. 1930 POKEV+24,17+X:NN=NN+1:IFNN>6THEN1950
  115. 1940 FORT=1TO500:NEXT:X=9-X:GOTO1930
  116. 1950 POKEV+17,27:MS$="NICE!NICE!":GOSUB63100:GOSUB63100:PRINT""
  117. 1960 AL$="ABCDEFGHIJKLMNOPQRSTUVWXYZ":FORI=1TO26:PRINTMID$(AL$,I,1);
  118. 1970 FORT=1TO200:NEXT:NEXT:POKEV+24,21:GOSUB63100
  119. 1990 PRINT"[147]LET'S DO THAT AGAIN BUT ALSO CHANGE"
  120. 2000 PRINT"SCREEN MEMORY[146] WHICH"
  121. 2010 PRINT"GIVES THE COLOURS!"
  122. 2020 PRINT"WE'LL:"
  123. 2030 PRINT"POKEV+24,X"
  124. 2040 PRINT"WHERE X=256*RND(1)":MS$="  READY?[146]":GOSUB63100
  125. 2050 GOSUB63000:V=53248:FORI=1TO20:X=256*RND(1):POKEV+24,X:FORT=1TO200:NEXT:NEXT
  126. 2060 A$="[147]RANDOM SCREEN MEMORY[146]!"+CHR$(13)
  127. 2070 A$=A$+"AND RANDOM CHARACTER MEMORY[146]!"
  128. 2080 FORI=1TOLEN(A$):PRINTMID$(A$,I,1);:FORT=1TO50:NEXT:NEXT
  129. 2090 MS$="  SLICK":GOSUB63100:POKEV+24,21:GOSUB63000
  130. 2100 PRINT"[147]BUT WE OBVIOUSLY WEREN'T IN "
  131. 2105 PRINT"BIT MAP MODE[146], SINCE ONLY THE"
  132. 2106 PRINT"'PRINTED CHARACTERS' WERE AFFECTED."
  133. 2107 PRINT"(THEY CHANGED 'SHAPE' AND 'COLOUR')"
  134. 2110 PRINT"SO WE'LL DO IT AGAIN"
  135. 2120 PRINT"WITH BMM[146]=1"
  136. 2130 PRINT"V=53248:POKEV+17,PEEK(V+17)OR32    "
  137. 2140 PRINT"FORI=0TO20:POKEV+24,256*RND(1):NEXT"
  138. 2150 MS$="  READY[146]?":GOSUB63100:GOSUB63000
  139. 2160 V=53248:POKEV+17,PEEK(V+17)OR32
  140. 2170 FORI=0TO20:POKEV+24,256*RND(1):FORT=1TO200:NEXT:NEXT:PRINT"[147]"
  141. 2180 MS$="MAMMA MIA!":GOSUB63100:POKE53265,27:POKE53272,21:GOSUB63100:GOSUB63000
  142. 2190 PRINT"[147]"
  143. 2200 FORI=7TO15:FORJ=0TO39:SS=40*I+J:POKE1024+SS,I-6:POKE55296+SS,0:NEXT:NEXT
  144. 2210 PRINT"****************************************"
  145. 2220 PRINT"YOU THINK THESE ARE A,B,C, ETC.?"
  146. 2230 PRINT"WRONG[146]! THEY'RE COLOURS!"
  147. 2240 PRINT"WEPOKE 1,2,3.. TO SCREEN MEMORY"
  148. 2250 PRINT"AND GET (NORMALLY) A,B,C,.."
  149. 2260 PRINT"BUT 1,2,3..IN SCREEN MEMORY[146] DEFINE"
  150. 2265 PRINT"COLOURS WHEN IN BIT MAP MODE[146]!!!":MS$="HIT A KEY":GOSUB63100
  151. 2270 GETA$:IFA$=""THEN2270
  152. 2275 V=53248:POKEV+17,PEEK(V+17)OR32
  153. 2280 GETA$:IFA$=""THEN2280
  154. 2290 POKEV+17,27:MS$="!!!SEE????":GOSUB63100
  155. 2300 PRINT"[147]NOW LET'S TRY M[146]ULTI C[146]OLOUR M[146]ODE."
  156. 2310 PRINT"WE'LL SET BMM[146]=0 (NO BIT MAP)"
  157. 2320 PRINT"AND MCM[146]=1 (MULTI COLOUR).":GOSUB63000
  158. 2330 PRINT"[147]";:GOSUB7001:A$=BMM$:B$="0":GOSUB7100:A$=MCM$:B$="1":GOSUB7100
  159. 2340 GOSUB7609:MS$="GO!GO!GO!":GOSUB63000
  160. 2350 PRINT"[147]IN MULTI COLOUR MODE[146] WE GET 'NORMAL'"
  161. 2360 PRINT"CHARACTERS FROM CHARACTER MEMORY"
  162. 2370 PRINT"(A '1' IN SCREEN MEMORY GIVES THE"
  163. 2380 PRINT"PIXEL PATTERN FOR AN 'A')"
  164. 2390 PRINT"BUT[157][157][157][184][184][184][145]..THE BIT PAIRS[157][157][157][157][157][184][184][184][184][184][145] 00,01,10,11"
  165. 2400 PRINT"EACH PRODUCE DIFFERENT COLOURED"
  166. 2410 PRINT"PIXEL PAIRS[157][157][157][157][157][184][184][184][184][184][145].":MS$="PEARS....?":GOSUB63100:GOSUB63000
  167. 2420 PRINT"[147]THE 'PIXEL PATTERN' FOR AN 'A' IS:":A$="PAIRS"
  168. 2430 PRINT"00011000"
  169. 2440 PRINT"00100100"
  170. 2450 PRINT"01000100"
  171. 2460 PRINT"01111100"
  172. 2470 PRINT"01000100"
  173. 2480 PRINT"01000100"
  174. 2490 PRINT"01000100"
  175. 2500 PRINT"00000000"
  176. 2510 PRINT"AND, TAKEN IN PEARS";:FORT=1TO1000:NEXT:FORI=1TO5:PRINT"[157] [157]";:
  177. 2520 FORT=1TO500:NEXT:NEXT:FORI=1TO5:PRINTMID$(A$,I,1);:FORT=1TO500:NEXT:NEXT
  178. 2530 PRINT"00[146]0110[146]00"
  179. 2540 PRINT"0010[146]0100"
  180. 2550 PRINT"01[146]0001[146]00"
  181. 2560 PRINT"0111[146]1100"
  182. 2570 PRINT"01[146]0001[146]00"
  183. 2580 PRINT"0100[146]0100"
  184. 2590 PRINT"01[146]0001[146]00"
  185. 2600 PRINT"0000[146]0000"
  186. 2610 PRINT"AND 00[146]=COLOUR #0":PRINT"    01[146]=COLOUR #1"
  187. 2620 PRINT"    10[146]=COLOUR #2":PRINT"    11[146]=COLOUR #3":GOSUB63000
  188. 2630 MS$="   V+??[146][146]":GOSUB63100:GOSUB63000:PRINT"[147]";:GOSUB7005:GOSUB63000
  189. 2635 PRINT"COLOUR #0[146] REGISTER"
  190. 2636 PRINT"COLOUR #1[146] REGISTER"
  191. 2637 PRINT"COLOUR #2[146] REGISTER"
  192. 2640 PRINTDN$"WE WANT 00[146] PATTERN = RED (2)":GOSUB63000
  193. 2650 A$=BMM$:B$="[157][157][157][157][214][214][214][214]0010":GOSUB7100
  194. 2660 PRINTDN$"WE WANT 01[146] PATTERN = WHITE (1)":GOSUB63000
  195. 2670 A$=MCM$:B$="[157][157][157][157][157][157][214][214][214][214]0001":GOSUB7100
  196. 2680 PRINTDN$"WE WANT 10[146] PATTERN = LIGHT BLUE (14)":GOSUB63000
  197. 2690 A$=CMB$:B$="[157][157][157][157][157][157][157][157][214][214][214][214]1110":GOSUB7100
  198. 2700 PRINTDN$"AND 11[146]...??":GOSUB63000
  199. 2710 PRINTDN$"AT SCREEEN LOC'N 1025 WE WANT 'GREY 1'":GOSUB63000
  200. 2720 PRINTDN$"..AND 'GREY 1' IS COLOUR '12'...":GOSUB63000
  201. 2730 PRINTDN$"..SO WE PUT '12' INTO COLOUR MEMORY..":GOSUB63000
  202. 2740 PRINTDN$"AND 1025=1024+1[146], SO...":GOSUB63000
  203. 2750 PRINTDN$"WE PUT '12' INTO 55296+1[146]!":GOSUB63000
  204. 2760 A$=SC$:B$="00000001":GOSUB7100:PRINTDN$"HERE'S OUR 'A'":GOSUB63000
  205. 2765 A$=CH$+"[145][145][145][157][157][157][192]>":B$="1100":GOSUB7100
  206. 2770 PRINTDN$"AND HERE'S OUR 'GREY 1'..":GOSUB63000
  207. 2771 PRINT"[147]WAIT[157][157][157][157][184][184][184][184][145]!!!"
  208. 2772 PRINT"REMEMBER[146]: IN MULTI COLOUR MODE"
  209. 2773 PRINT"BITS 0,1,2 OF A COLOUR MEMORY"
  210. 2774 PRINT"NYBBLE GIVE ONE OF EIGHT[146] COLOURS"
  211. 2775 PRINT"FOR THE '11' BIT PATTERN, BUT[157][157][157][184][184][184]"
  212. 2776 PRINT"BIT 3 SAYS WHETHER THAT PARTICULAR"
  213. 2778 PRINT"SCREEN POSITION IS[157][157][184][184][145] IN[146] MULTI-COLOUR":PRINT"MODE!!":GOSUB63000
  214. 2780 PRINT"[147]WITH THE SETUP SHOWN, A '1' IN"
  215. 2790 PRINT"SCREEN MEMORY[146] LOCATION 1025 WOULD"
  216. 2800 PRINT"YIELD A MULTI-COLOURED 'A' ON THE"
  217. 2810 PRINT"SCREEN..IN RED, WHITE, BLUE AND PURPLE[146]!"
  218. 2815 PRINT"('12'=8+4:8='MULTI';4='PURPLE')."
  219. 2820 PRINT"SINCE V+33,V+34 AND V+35 ARE 'SHARED',"
  220. 2830 PRINT"ALL[157][157][157][184][184][184][145] CHARACTERS WOULD SHARE"
  221. 2840 PRINT"THE RED, WHITE AND BLUE...BUT THE"
  222. 2850 PRINT"PURPLE COULD CHANGE FROM ONE SCREEN"
  223. 2860 PRINT"POSITION TO ANOTHER.":MS$="4=PURPLE!":GOSUB63100:GOSUB63000
  224. 2870 MS$="LET'S TRY!":GOSUB63100:GOSUB63000:PRINT"[147]":POKE53281,15
  225. 2875 V=53248:POKEV+17,27:POKEV+34,0:POKEV+35,0:POKEV+22,200:MS$="   DONE"
  226. 2880 A$="LET'S PUT AN 'A' INTO THE BOX:":GOSUB7500
  227. 2890 PRINT"POKE 1024+42,1[146] :REM '1' IS 'A'"
  228. 2900 PRINT" [176][192][174][157][157][157][221] [221][157][157][157][173][192][189]":GOSUB63000:POKE1024+42,1:GOSUB63100
  229. 2910 A$="LET'S MAKE IT A 'GREY 1-A':":GOSUB7500
  230. 2920 PRINT"POKE55296+42,12[146]:REM '12' IS 'GREY 1'":GOSUB63000:POKE55296+42,12
  231. 2925 GOSUB63100
  232. 2930 A$="TURN ON MULTI-COLOUR:":GOSUB7500
  233. 2940 PRINT"POKEV+22,PEEK(V+22)OR16[146]:MCM=1":GOSUB63000
  234. 2950 V=53248:POKEV+22,PEEK(V+22)OR16:GOSUB63100
  235. 2955 A$="CHANGES THINGS DOESN'T IT?!?":GOSUB7500:GOSUB63000
  236. 2960 A$="CHOOSE WHITE FOR COLOUR #2":GOSUB7500
  237. 2970 PRINT"POKEV+35,1[146]:WHITE IS '1'":GOSUB63000:POKEV+35,1:GOSUB63100
  238. 2980 A$="CHOOSE GREEN FOR COLOUR #1":GOSUB7500
  239. 2990 PRINT"POKEV+34,5[146]:GREEN IS '5'":GOSUB63000:POKEV+34,5:GOSUB63100
  240. 3000 A$="CHOOSE YELLOW FOR COLOUR #0":GOSUB7500
  241. 3010 PRINT"POKEV+33,7[146]:YELLOW IS '7'":GOSUB63000:POKEV+33,7:GOSUB63100
  242. 3020 GOSUB63000:POKEV+17,27:POKEV+33,1:POKEV+22,200
  243. 3030 PRINT"[147]AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
  244. 3040 PRINT"****************************************";
  245. 3050 PRINT"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
  246. 3060 PRINT"****************************************":MS$="   DONE"
  247. 3070 PRINT"SINCE WE CAN HAVE MULTI COLOUR[146]"
  248. 3080 PRINT"IN SOME PLACES AND NOT IN OTHERS....":GOSUB63000
  249. 3085 V=53248:POKEV+22,PEEK(V+22)OR16:POKEV+34,0:POKEV+35,3
  250. 3090 A$="FORI=0TO79:POKE55296+I,4:NEXT[146]:PURPLE":GOSUB7500:GOSUB63000
  251. 3100 FORI=0TO79:POKE55296+I,4:NEXT:GOSUB63100
  252. 3110 A$="FORI=80TO159:POKE55296+I,12:NEXT[146]:+MULTI":GOSUB7500:GOSUB63000
  253. 3120 FORI=80TO159:POKE55296+I,8+4:NEXT:GOSUB63100
  254. 3130 A$="FORI=80TO159:POKE55296+I,8:NEXT[146]":GOSUB7500:GOSUB63000
  255. 3140 FORI=80TO159:POKE55296+I,8:NEXT:GOSUB63100
  256. 3150 A$="FORI=80TO159:POKE55296+I,9:NEXT[146]":GOSUB7500:GOSUB63000
  257. 3160 FORI=80TO159:POKE55296+I,9:NEXT:GOSUB63100
  258. 3170 A$="FORI=80TO159:POKE55296+I,15:NEXT[146]":GOSUB7500:GOSUB63000
  259. 3180 FORI=80TO159:POKE55296+I,15:NEXT:GOSUB63100:GOSUB63000:MS$="NOW......"
  260. 3190 GOSUB63100:GOSUB63000:MS$="  MCM=0[146]":GOSUB63100:GOSUB63000
  261. 3195 POKEV+22,200:MS$="  GREY 3":GOSUB63100
  262. 3200 PRINT"[147]NOW YOU TRY PLAYING WITH MULTI COLOUR[146].":MS$="PLAY!PLAY!"
  263. 3210 GOSUB63100:GOSUB63000
  264. 4000 A$(1)="0123456789ABCDEF "
  265. 4010 A$(2)="!#$%&'()[219]-\:;<>/ "
  266. 4020 A$(3)="[209][215][171][179][177][178][213][201][202][203][255][193][211][218][216][181] "
  267. 4030 A$(4)="[206][206][206][206][206][206][206][206][206][206][206][206][206][206][206][206] "
  268. 4040 A$(5)="[205][205][205][205][205][205][205][205][205][205][205][205][205][205][205][205] "
  269. 4050 A$(6)="[181][181][181][181][181][181][181][181][181][181][181][181][181][181][181][181] "
  270. 4060 A$(7)="**************** "
  271. 4070 D$=""
  272. 4080 PRINT"[147]";:FORI=1TO7:PRINTA$(I)A$(I):NEXT:PRINT"   MULTI            NORMAL"
  273. 4085 PRINTD$"ENTER -1[146] TO QUIT"
  274. 4086 PRINT"(ENTER COLOUR NUMBERS 0-7)"
  275. 4090 V=53248:POKEV+22,216:REM MULTI
  276. 4100 INPUT"11[146]-COLOUR";C3
  277. 4105 IFC3<0THEN4200
  278. 4106 PRINT"           [157][157][157][157][157][157][157][157][157][157][157]"C$(C3)
  279. 4110 INPUT"10[146]-COLOUR";C2
  280. 4115 IFC2<0THEN4200
  281. 4116 PRINT"           [157][157][157][157][157][157][157][157][157][157][157]"C$(C2)
  282. 4120 INPUT"01[146]-COLOUR";C1
  283. 4125 IFC1<0THEN4200
  284. 4126 PRINT"           [157][157][157][157][157][157][157][157][157][157][157]"C$(C1)
  285. 4130 POKEV+34,C1AND15:POKEV+35,C2AND15
  286. 4140 FORI=0TO6:FORJ=0TO35
  287. 4150 POKE55296+40*I+J,(C3-8*(J<16))AND15
  288. 4160 NEXT:NEXT:GOTO4090
  289. 4200 POKEV+22,200:GOSUB60000:PRINT"[147][144]IN MULTI COLOUR MODE[146] (MCM=1 IN V+22)"
  290. 4205 PRINT"THE RESOLUTION IS LESS THAN IN STANDARD"
  291. 4210 PRINT"MODE...BUT IT DOES[157][157][157][157][184][184][184][184][145] GIVE MORE COLOURS!"
  292. 4215 PRINT"SUPPOSE YOU WANTED 'NORMAL' CHARACTERS"
  293. 4220 PRINT"BUT WITH A CHOICE OF COLOURS FOR"
  294. 4225 PRINT"PIXELS ON[146] AND PIXELS OFF[146]."
  295. 4230 PRINT"(FOR 'CHARACTER' AND 'BACKGROUND')."
  296. 4240 PRINT"THEN USE EXTENDED COLOUR MODE[146]!!":MS$="SET ECM=1?":GOSUB63100
  297. 4245 GOSUB63000:PRINT"[147]":MS$="LET'S TRY":GOSUB63100
  298. 4250 V=53248:POKEV+17,91:POKE1024,1
  299. 4260 :
  300. 4290 PRINT"[147]":FORI=0TO15:I$=RIGHT$(" "+STR$(I),2)
  301. 4300 PRINTI$"="C$(I):NEXT:PRINT:PRINTC$(I)
  302. 4310 POKE1066,1+64
  303. 4320 INPUT"COLOUR OF CHARACTER";CC:IFCC<0THENPOKEV+17,27:GOTO4400
  304. 4330 POKE55338,CC
  305. 4340 INPUT"BACKGROUND COLOUR  ";BK:IFBK<0THENPOKEV+17,27:GOTO4400
  306. 4350 POKEV+34,BK
  307. 4360 GOTO4320
  308. 4400 PRINT"[147]";:GOSUB7003
  309. 4410 PRINTDN$"WE SET BMM[146]=0 (NO BIT MAP)":GOSUB63000
  310. 4420 A$=BMM$:B$="0":GOSUB7100
  311. 4430 PRINTDN$"WE SET MCM[146]=0 (NO MULTI COLOUR)":GOSUB63000
  312. 4440 A$=MCM$:B$="0":GOSUB7100
  313. 4450 PRINTDN$"AND NOW SET ECM[146]=1 (!!!)":GOSUB63000
  314. 4460 A$=BMM$:B$="[157][157]1":GOSUB7100:GOSUB7612:GOSUB63000
  315. 4470 PRINTDN$"NOW[146],WE POKE 1025 WITH SOMETHING..":GOSUB63000
  316. 4475 A$=SC$:B$="01101101":GOSUB7100
  317. 4480 PRINTDN$"WHAT GOES ON THE SCREEN??":GOSUB63000
  318. 4490 PRINTDN$"1[146]:GET NUMBER IN SCREEN MEMORY(1025)":GOSUB63000
  319. 4500 PRINTDN$"LOOK AT BOTTOM 6 BITS!!":GOSUB63000:B0$=B$
  320. 4510 A$=SC$:PRINTA$B0$:B$=""+RIGHT$(B0$,11):GOSUB7100
  321. 4520 PRINTDN$"THESE GIVE '45'...":GOSUB63000
  322. 4530 PRINTDN$"2[146]:GET 'PIXEL PATTERN #45'":GOSUB63000
  323. 4540 PRINTDN$"FROM CHARACTER MEMORY[146]..8 BYTES":GOSUB63000
  324. 4550 PRINTDN$"(HAPPENS TO BE +[146])":GOSUB63000
  325. 4560 PRINTDN$"3[146]:PUT A +[146] ON THE SCREEN AT 1025":GOSUB63000
  326. 4570 PRINTDN$"4[146]:USE THE COLOUR NYBBLE AT 55296+1[146]"
  327. 4580 A$=CH$+"[145][145][145][157][157][157][192]>":B$="0101":GOSUB7100:GOSUB63000
  328. 4590 PRINTDN$"THIS DETERMINES THE ON[146] PIXELS!":GOSUB63000
  329. 4595 PRINTDN$"(HAPPENS TO BE 'GREEN')":GOSUB63000
  330. 4600 PRINTDN$"..AND, FOR THE BACKGROUND???":GOSUB63000
  331. 4610 PRINTDN$"5[146]:STRIP OFF THE TOP 2 BITS"
  332. 4620 A$=SC$:B$=LEFT$(B0$,4)+"[146]"+RIGHT$(B0$,11):GOSUB7100:GOSUB63000
  333. 4630 PRINTDN$"THESE GIVE 00,01,10 OR 11":GOSUB63000
  334. 4640 PRINTDN$"OR..N=0,1,2 OR 3 (DECIMAL)":GOSUB63000
  335. 4650 PRINTDN$"5[146]:USE AS BACKGROUND COLOUR....":GOSUB63000
  336. 4660 PRINTDN$"THE COLOUR IN THE COLOUR REGISTER":GOSUB63000
  337. 4670 PRINTDN$"V+33+N[146]!!!":GOSUB63000
  338. 4675 PRINT"[147]";
  339. 4676 A$="V+33 COLOUR #0"
  340. 4677 B$="V+34 COLOUR #1"
  341. 4678 C$="V+35 COLOUR #2"
  342. 4679 D$="V+36 COLOUR #3"
  343. 4680 PRINTNN$(1):PRINTNN$(2)A$:PRINTNN$(3)
  344. 4690 PRINTNN$(1):PRINTNN$(2)B$:PRINTNN$(3)
  345. 4700 PRINTNN$(1):PRINTNN$(2)C$:PRINTNN$(3)
  346. 4710 PRINTNN$(1):PRINTNN$(2)D$:PRINTNN$(3)
  347. 4720 MS$="4 COLOURS":GOSUB63100:GOSUB63000
  348. 4730 PRINT"[147]NOTE THAT ONLY 6 BITS[146] OF THE NUMBER"
  349. 4740 PRINT"IN SCREEN MEMORY ARE USED TO DEFINE"
  350. 4750 PRINT"A 'CHARACTER'. SINCE 2^6=64 THEN ONLY"
  351. 4760 PRINT"64 CHARACTERS[146] ARE AVAILABLE IN"
  352. 4770 PRINT"EXTENDED COLOUR MODE[146]"
  353. 4780 PRINT"INCLUDING 'A'-'Z' AND '0'-'9'"
  354. 4790 PRINT"AND SOME OTHERS.":MS$="  WATCH":GOSUB63100:GOSUB63000:PRINT"[147]"
  355. 4800 FORI=0TO255:POKE1024+I,I:POKE55296+I,0:NEXT:V=53248:POKEV+17,91
  356. 4810 PRINT"MOST GRAPHICS GONE!!!!":GOSUB63100:GOSUB63000:POKEV+17,27
  357. 4820 POKEV+17,91:FORT=1TO500:NEXT:POKEV+17,27
  358. 4840 FORT=1TO500:NEXT:POKEV+17,27
  359. 4845 GETA$:IFA$=""THEN4820
  360. 4850 MS$="  GONE":GOSUB63100:GOSUB63000
  361. 4860 PRINT"[147]";:FORI=0TO7:PRINTA$(I):NEXT:X=0
  362. 4870 PRINT"SET ECM[146]="X:POKEV+17,27-64*(X=1)
  363. 4880 FORT=1TO500:NEXT:X=1-X
  364. 4890 GETA$:IFA$=""THEN4870
  365. 4900 POKEV+17,27
  366. 5000 PRINT"[147]USE EXTENDED COLOUR MODE"
  367. 5010 PRINT"FOR ALPHANUMERIC DISPLAYS IN"
  368. 5020 PRINT"MULTI-COLOUR."
  369. 5030 PRINT"USE MULTI-COLOUR MODE[146] FOR ...":GOSUB63000:MS$=" SPRITES![146]"
  370. 5040 GOSUB63100:GOSUB63000
  371. 6999 MS$="AU REVOIR!":PRINT"[147]":GOSUB63100:PRINT"":END
  372. 7000 REM REGISTERS ETC.
  373. 7001 A$="V+17":B$="V+22":C$="V+24":D$="SCREEN MEMORY":E$="CHARACTER MEMORY"
  374. 7002 GOSUB7010:RETURN
  375. 7003 A$="V+17":B$="V+22":C$="V+24":D$="SCREEN MEMORY":E$="COLOUR MEMORY   "
  376. 7004 GOSUB7300:RETURN
  377. 7005 A$="V+33":B$="V+34":C$="V+35":D$="SCREEN MEMORY":E$="COLOUR MEMORY   "
  378. 7006 GOSUB7300:RETURN
  379. 7010 PRINTNN$(1):PRINTNN$(2)A$:PRINTNN$(3)
  380. 7020 PRINTNN$(1):PRINTNN$(2)B$:PRINTNN$(3)
  381. 7030 PRINTNN$(1):PRINTNN$(2)C$:PRINTNN$(3)
  382. 7040 PRINTL$,L$:PRINTNN$(1),NN$(1):PRINTNN$(2),NN$(2):PRINTNN$(3),NN$(3)
  383. 7050 PRINTNN$(1),NN$(1):PRINTNN$(2),NN$(2):PRINTNN$(3),NN$(3)
  384. 7060 PRINTNN$(1),NN$(1):PRINTNN$(2),NN$(2):PRINTNN$(3),NN$(3)
  385. 7070 PRINT" ^"D$,"^"E$
  386. 7080 RETURN
  387. 7100 REM BITS DISPLAY
  388. 7110 FORII=1TO5:PRINTA$B$:FORTT=1TO100:NEXT:PRINTA$""B$:FORTT=1TO100:NEXT
  389. 7120 NEXT:RETURN
  390. 7200 REM BIT MAP MODE
  391. 7210 V=53248:POKEV+17,PEEK(V+17)OR32
  392. 7220 GETA$:IFA$<>""THEN7220
  393. 7230 GETA$:IFA$=""THEN7230
  394. 7240 POKEV+17,27:RETURN
  395. 7300 REM REGISTERS ETC.
  396. 7310 PRINTNN$(1):PRINTNN$(2)A$:PRINTNN$(3)
  397. 7320 PRINTNN$(1):PRINTNN$(2)B$:PRINTNN$(3)
  398. 7330 PRINTNN$(1):PRINTNN$(2)C$:PRINTNN$(3)
  399. 7340 PRINTL$,L$:PRINTNN$(1),N$(1):PRINTNN$(2),N$(2):PRINTNN$(3),N$(3)
  400. 7350 PRINTNN$(1),N$(1):PRINTNN$(2),N$(2):PRINTNN$(3),N$(3)
  401. 7360 PRINTNN$(1),N$(1):PRINTNN$(2),N$(2):PRINTNN$(3),N$(3)
  402. 7370 PRINT" ^"D$,"^"E$
  403. 7380 RETURN
  404. 7500 REM SLOW PRINT
  405. 7510 PRINTDD$;:FORI=1TOLEN(A$):PRINTMID$(A$,I,1);:FORT=1TO10:NEXT:NEXT
  406. 7520 PRINT:RETURN
  407. 7600 A$="_MAGIC REGISTERS"
  408. 7601 B$="_ IN THE        "
  409. 7602 C$="_ VIDEO CHIP    ":GOSUB7620:RETURN
  410. 7603 A$=" [176][192][192][192][192][192][192][192][192][192][192][192][192][174] "
  411. 7604 B$=" [221]NORMAL  MODE[221] "
  412. 7605 C$=" [173][192][192][192][192][192][192][192][192][192][192][192][192][189] ":GOSUB7630:RETURN
  413. 7606 A$=" [176][192][192][192][192][192][192][192][192][192][192][192][192][174] "
  414. 7607 B$=" [221]BIT MAP MODE[221] "
  415. 7608 C$=" [173][192][192][192][192][192][192][192][192][192][192][192][192][189] ":GOSUB7630:RETURN
  416. 7609 A$=" [176][192][192][192][192][192][192][192][192][192][192][192][192][174] "
  417. 7610 B$=" [221]MULTI-COLOUR[221] "
  418. 7611 C$=" [173][192][192][192][192][192][192][192][192][192][192][192][192][189] ":GOSUB7630:RETURN
  419. 7612 A$=" [176][192][192][192][192][192][192][192][192][192][192][192][192][174] "
  420. 7613 B$=" [221]EXT.COL.MODE[221] "
  421. 7614 C$=" [173][192][192][192][192][192][192][192][192][192][192][192][192][189] ":GOSUB7630:RETURN
  422. 7620 PRINTPS$A$:PRINTPS$""B$:PRINTPS$""C$:RETURN
  423. 7630 PRINTPS$A$:PRINTPS$""B$:PRINTPS$""C$:RETURN
  424. 60000 REM INITIALIZE
  425. 60001 BT$="":FORI=1TO24:BT$=BT$+"":NEXT:PRINTCHR$(142)
  426. 60002 PT$="[176][192][192][192][192][192][192][192][192][192][192][174][157][157][157][157][157][157][157][157][157][157][157][157][221][221][157][157][157][157][157][157][157][157][157][157][157][157][173][178][192][192][192][192][192][192][192][192][178][189]"
  427. 60003 PT$=PT$+"[157][157][157][157][157][157][157][157][157][157][157][157][157][206][163][163][163][163][163][163][163][163][163][163][163][163][205][157][157][157][157][157][157][157][157][157][157][157][157][157][157][165]============[144][167]"
  428. 60004 PT$=PT$+"[157][157][157][157][157][157][157][157][157][157][157][157][157][157][208][207][163][163][163][163][163][163][163][163][163][163][208][207][145][145][145][145][157][157][157][157][157][157][157][157][157][157][157][157]"
  429. 60005 PT$=BT$+"[145][145][145][145][145][145]"+PT$
  430. 60007 ML$=""
  431. 60008 WD=40:CRT=1024
  432. 60009 W2=WD/2:W3=WD-1:W1$=MID$(STR$(WD),2):POKE53281,15:POKE53280,12:PRINT"[144]"
  433. 60010 V=53248:FORI=0TO16:POKEV+I,0:NEXT:POKEV+22,200
  434. 60011 POKEV+23,0:POKEV+29,0:FORI=0TO7:POKEV+39+I,0:NEXT:POKEV+17,27:POKEV+24,21
  435. 60012 N$(1)="[176][192][178][192][178][192][178][192][174]"
  436. 60013 N$(2)="[221] [221] [221] [221] [221]"
  437. 60014 N$(3)="[173][192][177][192][177][192][177][192][189]"
  438. 60015 NN$(1)="[176][192][178][192][178][192][178][192][178][192][178][192][178][192][178][192][174]"
  439. 60016 NN$(2)="[221] [221] [221] [221] [221] [221] [221] [221] [221]"
  440. 60017 NN$(3)="[173][192][177][192][177][192][177][192][177][192][177][192][177][192][177][192][189]"
  441. 60020 R$="[176][178][178][178][178][178][178][178][174][157][157][157][157][157][157][157][157][157][173][177][177][177][177][177][177][177][189][145]"
  442. 60030 L$="- - - - - - - - -"
  443. 60040 PS$=""
  444. 60050 DN$=""
  445. 60060 BMM$="":MCM$="":SMB$=""
  446. 60070 CMB$=SMB$+"":CL$="                                        "
  447. 60080 DN$=DN$+CL$+DN$
  448. 60090 SC$=SMB$+""
  449. 60100 CH$=SC$+""
  450. 60110 DD$="":DD$=DD$+CL$+DD$
  451. 60115 IF D9=0 THEN DIM C$(16):FORI=0TO16:READC$(I):NEXT
  452. 60116 DATABLACK,WHITE,RED,CYAN,PURPLE,GREEN,BLUE,YELLOW
  453. 60117 DATAORANGE,BROWN,LIGHT RED,GRAY 1,GRAY 2,LIGHT GREEN,LIGHT BLUE,GRAY 3
  454. 60118 DATA ENTER NEGATIVE NUMBER TO QUIT
  455. 60200 D9=1:RETURN
  456. 62000 GOSUB63000
  457. 62001 PRINTSD$CL$:PRINTCL$:PRINTCL$
  458. 62003 RETURN
  459. 63000 PRINT"[144]HIT RETURN[146] TO CONTINUE";
  460. 63001 GETA$:IFA$<>""THEN63001
  461. 63002 GETA$:IFA$=""THEN63002
  462. 63003 RETURN
  463. 63100 FORT=1TO5:PRINTPT$MS$;
  464. 63101 PRINTPT$"          ";
  465. 63102 PRINTPT$MS$;:NEXT
  466. 63103 PRINT"[144]":RETURN
  467. 63900 SD$="":CL$="[146]                                      [146]"
  468. 63901 SR$=""
  469. 63902 RETURN
  470.